js 模拟弹簧运动 发表于 2016-03-22 | 分类于 javascript | 速度图 关键代码123456789101112131415161718192021222324252627 (function step(x,v){ var result= (function stepper(x, v) { var frameRate =1/60, destX = 0, k =100, b = 20,errorMargin = 0.00001; // 弹簧拉力 = 弹性系数 * 拉伸距离 var Fspring = -k * (x - destX); // Fdamper = (cpsv^2)/2 // 简化 // 阻力 = 阻力系数* 阻力系数 var Fdamper = -b * v; //F=ma m忽略 var a = Fspring + Fdamper; // if (window.hackOn) frameRate = 1 / 300; var newV = v + a * frameRate; var newX = x + newV * frameRate; if (Math.abs(newV - v) < errorMargin && Math.abs(newX - x) < errorMargin) { return [destX, 0]; } return [newX, newV]; })(x,v) if(result[0]>0.1){ step(result[0],result[1]) }})(300,60)